﻿<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="View_RequiredValidator.aspx.cs" Inherits="AFCEPF.Samples.WebSamples.Controls2.View_RequiredValidator" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
        .style2
        {
            width: 274px;
        }
        .style3
        {
            font-weight: bold;
            text-decoration: underline;
        }
        .style4
        {
            text-decoration: underline;
        }
    </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h3>Utilisation du Contrôle RequiredFieldValidator</h3>

    <p>
    Les contrôles "Validator" permettent de valider ou non l'état d'un contrôle (ou de plusieurs dans certains cas).
    Ce qui est démontré ici est l'usage basique du contrôle <b>RequiredFieldValidator</b>, qui permet de vérifier 
    qu'un champ a bien été saisi.
    </p>
    <p>
        Pour valider que la TextBox a bien été renseignée, on a ajouté un 
        RequiredFieldValidator, et défini sur celui-ci les propriétés suivantes :        
        </p>

        <ul>
            <li><b>ControlToValidate</b> : textBox1</li>
            <li><b>ErrorMessage</b> : &quot;ce champ doit être renseigné&quot;</li>
        </ul>

        <p>
        Lors du <b>PostBack</b>, le message d'erreur défini dans le controle <b>RequiredFieldValidator</b> apparait
        si la TextBox n'est pas renseignée.
        </p>
    <p>
        De plus, et dès lors qu'au moins un contrôle de type Validator est en erreur, la propriété 
        <span class="style3">IsValid</span>
        de l'objet <b>Page</b> en cours est flaggé à false automatiquement.
        </p>

        <table class="style1">
        <tr>
            <td class="style2">
                <asp:Label ID="Label1" runat="server" Text="Ce champ doit être rempli"></asp:Label>
            </td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td class="style2">
                <asp:TextBox ID="TextBox1" runat="server" Width="300px"></asp:TextBox>
            </td>
            <td>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                    ControlToValidate="TextBox1" ErrorMessage="Ce champ doit être rempli !" 
                    EnableClientScript="False"></asp:RequiredFieldValidator>
            </td>
        </tr>
    </table>

    <asp:Button ID="btnValidate" runat="server" Text="Valider la Page" 
        Width="300px" onclick="btnValidate_Click" />

    <br />
    <br />
    <asp:Label ID="lblPageStatus" runat="server" style="font-weight: 700"></asp:Label>

    <p>
        <span class="style4">Note sur la validation côté client et côté serveur :</span>
        <br />Les contrôles de type "Validator" peuvent (sauf le CustomValidator) effectuer leur validation 
    soit côté serveur (lors d'un PostBack), ce qui oblige à faire un round-trip vers le serveur 
    pour effectuer la validation, soit côté client avec du code JavaScript.
        <br />
        <br />
        La validation s'effectuera côté serveur ou côté client en fonction de la valeur de la propriété booléenne
    nommée <b>EnableClientScript</b> du contrôle Validator.
        <br />Dans cette page, la propriété <b>EnableClientScript</b> du contrôle <b>RequiredFieldValidator</b> est à 
        <i>false</i>, et il nous 
    faut donc effectuer un <b>PostBack</b> (via un click sur le bouton) pour effectuer la validation.
        <br /><br />
        Si l'on met la valeur de cette propriété à true, on constatera que :
        <br />
    </p>
    <ul>
        <li>Du code JavaScript de validation sera inséré dans la page envoyée au browser et 
            effectuera la validation (afficher le code de la page pour le voir).</li>
            
        <li>Le click sur le bouton ne générera plus de PostBack tant que le JavaScript 
            n&#39;aura pas validé le contrôle (en fait, tant que la propriété IsValid de la page 
            sera à false). 
            <br />
            On ne verra donc jamais apparaitre dans la Label lblPageStatus le 
            message indiquant que la page n&#39;est pas valide.</li>
    </ul>
    <br />
    <br />

</asp:Content>
